// 1794. [滑窗]最长的指定瑕疵度的元音子串/滑动窗口
// https://oj.rnd.huawei.com/problems/1794/details
//定义：开头和结尾都是元音字母（aeiouAEIOU）的字符串为 元音字符串
//，其中混杂的非元音字母数量为其 瑕疵度 。比如: “a” 、
//“aa”是元音字符串，其瑕疵度都为0 “aiur”不是元音字符串（结尾不是元音字符）
//“abira”是元音字符串，其瑕疵度为2
//给定一个字符串，请找出指定瑕疵度的最长元音字符子串，并输出其长度，
//如果找不到满足条件的元音字符子串，输出0。
//子串：字符串中任意个连续的字符组成的子序列称为该字符串的子串。
//输入首行输入是一个整数，表示预期的瑕疵度flaw，取值范围 [0, 65535]。
//接下来一行是一个仅由字符a-z和A-Z组成的字符串，字符串长度 (0, 65535]。
//输出为一个整数，代表满足条件的元音字符子串的长度。
//输入 0
// asdbuiodevauufgh
//输出 3
//满足条件的最长元音字符子串有两个，分别为uio和auu，长度为3。
//输入 2
// aeueo
//输出 0
//没有满足条件的元音字符子串，输出0
//输入 1
// aabeebuu
//输出 5
//满足条件的最长元音字符子串有两个，分别为aabee和eebuu，长度为5
#include <bits/stdc++.h>
using namespace std;

bool Vowel(char c) {
  return string("aeiouAEIOU").find(c) != string::npos;
}

//【首尾元音,中间瑕疵】
int LongestFlawedVowel(const size_t flaw, const string& input) {
  int l = 0, r = 0;
  int fcnt = 0, ans = 0;
  while (r < input.size()) {
    if (!Vowel(input[r])) {
      fcnt++;
    }
    while (fcnt > flaw && l < r){
      if(!Vowel(input[l++])){
        fcnt--;
      }
    }
    if(Vowel(input[l]) && Vowel(input[r]) && fcnt == flaw){
      ans = max(ans, r - l + 1);
    }
    r++;
  }
  return ans;
}

int main_vowel() {
  size_t flaw = 0;
  cin >> flaw;
  string input = "asdbuiodevauufgh";
  cin >> input;
  cout << GetLongestFlawedVowelSubstrLen(flaw, input) << endl;
  return 0;
}
